105ce7ad39191561b75f51504242877f0059e6f3,zk/src/org/zkoss/zk/ui/impl/UiEngineImpl.java,UiEngineImpl,execNewPage0,#Execution#PageDefinition#Richlet#Page#Writer#,264
Before Change
pagedef.init(page, !uv.isEverAsyncUpdate() && !uv.isAborting());
if (!uv.isAborting() && !exec.isVoided())
execCreate(
((WebAppCtrl)_wapp).getUiFactory(),
exec, page, pagedef, null);
inits.doAfterCompose(page);
} catch(Throwable ex) {
inits.doCatch(ex);
After Change
}
/** It assumes exactly one of pagedef and richlet is not null.
*/
public void execNewPage0(final Execution exec, final PageDefinition pagedef,
final Richlet richlet, final Page page, final Writer out) throws IOException {
//Update the device type first. If this is the second page and not
//belonging to the same device type, an exception is thrown
final Desktop desktop = exec.getDesktop();
final LanguageDefinition langdef = //default page
pagedef != null ? pagedef.getLanguageDefinition():
richlet != null ? richlet.getLanguageDefinition(): null;
if (langdef != null)
desktop.setDeviceType(langdef.getDeviceType()); //set and check!
//It is possible this method is invoked when processing other exec
final Execution oldexec = Executions.getCurrent();
final ExecutionCtrl oldexecCtrl = (ExecutionCtrl)oldexec;
final UiVisualizer olduv =
oldexecCtrl != null ? (UiVisualizer)oldexecCtrl.getVisualizer(): null;
final UiVisualizer uv;
if (olduv != null) uv = doReactivate(exec, olduv);
else uv = doActivate(exec, null, false);
final ExecutionCtrl execCtrl = (ExecutionCtrl)exec;
final Page old = execCtrl.getCurrentPage();
final PageDefinition olddef = execCtrl.getCurrentPageDefinition();
execCtrl.setCurrentPage(page);
execCtrl.setCurrentPageDefinition(pagedef);
final Configuration config = _wapp.getConfiguration();
boolean cleaned = false;
try {
config.invokeExecutionInits(exec, oldexec);
if (olduv != null) {
final Component owner = olduv.getOwner();
if (owner != null) {
((PageCtrl)page).setOwner(owner);
// if (D.ON && log.finerable()) log.finer("Set owner of "+page+" to "+owner);
}
}
//Cycle 1: Creates all components
//Note:
//1) stylesheet, tablib are inited in Page's contructor
//2) we add variable resolvers before init because
//init's zscirpt might depend on it.
if (pagedef != null) {
page.addFunctionMapper(pagedef.getFunctionMapper());
initVariableResolvers(pagedef, page);
final Initiators inits = Initiators.doInit(pagedef, page);
try {
//Request 1472813: sendRedirect in init; test: sendRedirectNow.zul
pagedef.init(page, !uv.isEverAsyncUpdate() && !uv.isAborting());
if (!uv.isAborting() && !exec.isVoided())
execCreate(
new CreateInfo(
((WebAppCtrl)_wapp).getUiFactory(),
exec, page),
pagedef, null);
inits.doAfterCompose(page);
} catch(Throwable ex) {